<?php
/*
 * 短信及验证码
 */
namespace Msgcode;
include_once('./Application/Msgcode/MsgCode.conf.php');

class MsgCode{
    
    static $type = false;
    
    public function __construct($_bool=false){
        import('Memcachectr');
        $this->m = \Think\Memcachectr::create();
    }
    
    public function sendMsg($mobile,$time,$content=0, $msgType = false ){
        if(time()-$_SESSION['s_time']<59 || !$_SESSION['s_verify']){
            return false;
        }

        // 确定选择哪个短信通道
        if ( array_rand( range(0,9), 1 ) <= 3 && $msgType === false ){
            $userid     = MSG_CODE_USERID;
            $account    = MSG_CODE_ACCOUNT;
            $password   = strtoupper( MSG_CODE_PASSWORD );
            $msg_url    = MSG_CODE_URL;
        }else{
            $userid     = B_MSG_CODE_USERID;
            $account    = B_MSG_CODE_ACCOUNT;
            $password   = B_MSG_CODE_PASSWORD;
            $msg_url    = B_MSG_CODE_URL;
        }
        /////////////////////////

        $mobile = $mobile;

        if($content==0){
            $content= "【KAKA】您的验证码为：".$this->code($mobile)."。";
        }
        $content=urlencode($content);
        $action = 'send';
        //return true;
        $url = sprintf( $msg_url,$userid,$account,$password,$mobile,$content);
        $re = $this->achieve($url);
        $this->foo($re);
        if(strstr($re,'Success')){
            $_SESSION['s_time'] = time();
            $this->foo(time().'----'.$_SESSION['msg_code'].'----'.$mobile.'----'.$re);
            return true;
        }else{
            $this->foo(time().'----'.$_SESSION['msg_code'].'----'.$mobile.'----'.$re);
            return false;
        }
    }

    public function sendCoupon($mobile,$store,$coupon){
        $time=time();
        $content= "【KAKA】尊敬的顾客，您好！您领取的".$coupon."将于24小时内发送至您的账户，请您关注".$store."微信公众号，点击个人中心登录查看。";
        return $this->sendMsg($mobile,$time,$content);exit;
        $userid = MSG_CODE_USERID;
        $account = MSG_CODE_ACCOUNT;
        $password = strtoupper(MSG_CODE_PASSWORD);
        $mobile = $mobile;
        $content= "【KAKA】尊敬的顾客，您好！您领取的".$coupon."将于24小时内发送至您的账户，请您关注".$store."微信公众号，点击个人中心登录查看。";
        $content=urlencode($content);
        $action = 'send';
        $url = sprintf(MSG_CODE_URL,$userid,$account,$password,$mobile,$content);
        $re = $this->achieve($url);
        if(strstr($re,'Success')){
            return true;
        }else{
            return false;
        } 
    }
    
    public function sendMsgAll($mobile,$actions,$store){
        $time=time();
        $content= "【KAKA】尊敬的顾客，您好！您参与的".$store."的".$actions."活动已经结束，您的奖励已经发送至您的账户，请您关注".$store."微信公众号，点击个人中心登录查看。";
        return $this->sendMsg($mobile,$time,$content);exit;
        $userid = MSG_CODE_USERID;
        $account = MSG_CODE_ACCOUNT;
        $password = strtoupper(MSG_CODE_PASSWORD);
        $mobile = $mobile;
        $content= "【KAKA】尊敬的顾客，您好！您参与的".$store."的".$action."活动已经结束，您的奖励已经发送至您的账户，请您关注".$store."微信公众号，点击个人中心登录查看。";
        $content=urlencode($content);
        $action = 'send';
        //return true;
        $url = sprintf(MSG_CODE_URL,$userid,$account,$password,$mobile,$content);
        $re = $this->achieve($url);
        if(strstr($re,'Success')){
            return true;
        }else{
            return false;
        }
    }

    public function checkCode($mobile,$code){
        if($mobile == $_SESSION['msg_mobile'] && $code == $_SESSION['msg_code']){
            return true;
        }
        return false;
    }
    
    private function code($mobile){
        $str = '';
        for($i=0;$i<6;$i++){
            $str .= array_rand(range(0,9), 1);
        }
        $_SESSION['msg_code'] = $str;
        $_SESSION['msg_code_time'] = time();
        $_SESSION['msg_mobile'] = $mobile;
       
        return $str;
    }
    
    private function achieve($url, $data, $timeout = 30) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $tmpInfo = curl_exec($curl);
        if (curl_errno($curl)) {
            echo 'Errno' . curl_error($curl);
        }
        curl_close($curl);
        return $tmpInfo;
    }

    public function foo($str) {
        $f = fopen('./public/upload/msg.txt', 'a+');
        fwrite($f, $str . "\r\n");
        fclose($f);
    }



    /**
     * sendMsg_test 发送短信
     * @param $mobile
     * @param $time
     * @param $content
     * @param bool $msgType
     * @return bool
     * @author laoWen
     */

    public function sendMsg_b( $mobile,$content = 0, $msgType = false ){
        if($content==0){
            if ( time() - $_SESSION['s_time']<59 || !$_SESSION['s_verify'] ){
                return false;
            }
        }
        // 确定选择哪个短信通道
        if ( array_rand( range(0,9), 1 ) <= 3 && $msgType === false ){
            $msg_userid     = MSG_CODE_USERID;
            $msg_account    = MSG_CODE_ACCOUNT;
            $msg_password   = strtoupper( MSG_CODE_PASSWORD );
            $msg_url    	= MSG_CODE_URL;
        }else{
            $msg_userid     = B_MSG_CODE_USERID;
            $msg_account    = B_MSG_CODE_ACCOUNT;
            $msg_password   = B_MSG_CODE_PASSWORD;
            $msg_url    	= B_MSG_CODE_URL;
        }
        // 确定 短信内容
        $msg_content = $this->sendContent( $content, $mobile );
        // 确定 请求URL
        $url = sprintf( $msg_url,$msg_userid,$msg_account,$msg_password,$mobile,$msg_content );
        $re = $this->achieve($url);
        $this->foo($re);
        if(strstr($re,'Success')){
            $_SESSION['s_time'] = time();
            $this->foo(time().'----'.$_SESSION['msg_code'].'----'.$mobile.'----'.$re);
            return true;
        }else{
            $this->foo(time().'----'.$_SESSION['msg_code'].'----'.$mobile.'----'.$re);
            return false;
        }
    }

    /**
     * sendContent 处理短信内容
     * @param int $content
     * @param bool $mobile
     * @return string
     * @author laoWen
     */

    public function sendContent( $content = 0 , $mobile = false ){

        if ( $content === 0 && $mobile!=false ) {
            $content= "您本次的验证码为：".$this->code($mobile)."，如非您本人操作，请忽略此短信。【KAKA】";
        }else{
            $arr = explode( '&', $content );
            if ( $arr[0] == 1 ) {
                $content = '尊敬的顾客，您好！您领取的'.$arr[2].'已经发送至您的账户，请您关注'.$arr[3].'微信公众号，点击个人中心登录查看。【KAKA】';
            }elseif ( $arr[0] == 2 ) {    
                $content = '尊敬的顾客，您好！您参与的'.$arr[2].'的'.$arr[3].'活动已经结束，您的奖励已经发送至您的账户，请您关注'.$arr[2].'微信公众号，点击个人中心登录查看。【KAKA】';
            }elseif ( $arr[0] == 3 ) {
                $content = '尊敬的顾客，您好！您在'.$arr[2].'参与的'.$arr[3].'拼团活动已经成功成团，订单号：'.$arr[5].'，门店电话：'.$arr[4].'。【KAKA】';
            }elseif ( $arr [0] == 4 ) {
                $content = '尊敬的顾客，您好！您于'.$arr[2].'在'.$arr[3].'消费'.$arr[4].'一次。如有疑问请咨询门店，门店电话：'.$arr[5].'。【KAKA】';
            }elseif( $arr [0] == 5){
                $content ='尊敬的顾客，您好！您已成功支付'.$arr[2].'举办的'.$arr[3].'，订单号：'.$arr[5].'。【KAKA】';
            }elseif($arr [0] == 6){
                $content ='尊敬的用户，您好！您在'.$arr[2].'提交的'.$arr[3].'入驻申请已经通过，登录账号：'.$arr[4].'，初始密码：'.$arr[5].'，请您及时修改。其他相关信息将通过邮件发送，请注意查收。【KAKA】';
            }elseif($arr [0] == 7){
                 $content ='尊敬的用户，您好！您已经被任命为'.$arr[2].'负责人，登录账号：'.$arr[3].'，初始密码：'.$arr[4].'，请您登陆后及时修改密码。【KAKA】';
            }elseif($arr [0] == 8){
                 $content ='尊敬的顾客，您好！'.$arr[2].'撤销您在'.$arr[3].'消费'.$arr[4].'一次的记录。如有疑问请咨询门店，门店电话：'.$arr[5].'。 【KAKA】';
            }
        }
        return urlencode( $content );
        //--7尊敬的用户，您好！您已经被任命为@负责人，登录账号：@，初始密码：@，请您登陆后及时修改密码。【KAKA】
        //--6尊敬的顾客，您好！您成功参与（门店）主办的（活动名称）公益活动，详情咨询门店，门店电话：（门店电话）。【KAKA】
        /*--4尊敬的顾客，您好！您于（时间）在（门店）消费（项目名称）一次。如有疑问请咨询门店，门店电话：（门店电话）。 【KAKA】（用于订单出现消费的场景）
        --3尊敬的顾客，您好！您在（门店）参与的（活动名称）拼团活动已经成功成团，您即刻可以预约到店进行消费，门店电话：（门店电话）。【KAKA】（用于拼团成功的场景）
        --1尊敬的顾客，您好！您领取的（优惠券名称）已经发送至您的账户，请您关注（门店）微信公众号，点击个人中心登录查看。【KAKA】（用于颜值赠送的场景）
        --2Mode：尊敬的顾客，您好！您参与的（门店）的（活动项目）活动已经结束，您的奖励已经发送至您的账户，请您关注（门店）微信公众号，点击个人中心登录查看。【KAKA】（颜值活动结束的场景）
        Mode：您本次的验证码为：（验证码），如非您本人操作，请忽略此短信。【KAKA】（用于各类验证码场景）
        --5Mode：尊敬的顾客，您好！您已成功支付'.$arr[2].'举办的'.$arr[3].'，订单号：'.$arr[5].'。【KAKA】（用于公益活动的场景）
        --8尊敬的顾客，您好！@撤销您在@消费@一次的记录。如有疑问请咨询门店，门店电话：@。 【KAKA】
        --3 尊敬的顾客，您好！您在@参与的@拼团活动已经成团，订单号：@，门店电话：@。【KAKA】*/
    }
    
}
